package com.quectel.core.module.scheduling.dto;

import com.quectel.core.module.dept.dto.DeptPersonDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 *
 * @author zhangheng
 * @email nolan.zhang@quectel.com
 * @date 2023/07/05 13:24
 */
@Data
@Schema
public class SchedulingLeaveBalanceDto implements Serializable {

    /**
    * id
    */
    @Schema(description = "id")
    private Long id;

    /**
    * 假期id
    */
    @Schema(description = "假期id")
    @NotNull
    private Long leaveId;

    /**
    * 人员id
    */
    @Schema(description = "人员id")
    @NotNull
    private Long personId;

    /**
    * 总发放数量
    */
    @Schema(description = "总发放数量(单位是假期的最小单位)")
    @NotNull
    private BigDecimal balance;

    /**
    * 已使用的数量
    */
    @Schema(description = "已使用的数量(单位是假期的最小单位)")
    @NotNull
    private BigDecimal usedBalance;

    /**
     * 单位
     */
    @Schema(description = "单位,字典值:SchedulingLeaveTimeUnit")
    private Byte unit;

    /**
    * 年份,例如2023
    */
    @Schema(description = "年份,例如2023")
    @NotNull
    private Integer year;

    /**
    * 开始时间
    */
    @Schema(description = "开始时间")
    @NotNull
    private Date startTime;

    /**
    * 结束时间
    */
    @Schema(description = "结束时间")
    @NotNull
    private Date endTime;

    /**
     * 有效期开始时间
     */
    @Schema(description = "开始时间")
    private Date effectiveStartTime;

    /**
     * 有效期结束时间
     */
    @Schema(description = "有效期结束时间")
    @NotNull
    private Date effectiveEndTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private Date createTime;

    /************非数据库字段 start ************/
    @Schema(description = "员工")
    private DeptPersonDto deptPerson;
    /************非数据库字段 end **************/
}
